Column

Tabla de daños

Mapa ubicación de daños

Column

Gráfico de principales elementos dañados

Gráfico de registros mensuales

---
title: "Daños en la RVN"
output: 
  flexdashboard::flex_dashboard:
    social: menu
    theme: journal
    source_code: embed
---

```{r setup, include=FALSE}
# Paquete para manipulación de datos
library(dplyr)
# Paquete para manejo de datos vectoriales
library(sf)
# Paquetes para manejo de datos raster
library(terra)
# Paquete para manejo de tablas
library(DT)
# Paquetes para graficación
library(ggplot2)
library(plotly)
# Paquete para mapas interactivos
library(leaflet)
# Paquete para dashboard
library(flexdashboard)



# Lectura de una capa vectorial (GeoJSON) de zonas de conservación vial
zonas <-
  st_read(
    "https://raw.githubusercontent.com/ggaltar/danos_red_vial/main/capas/zonas_conservacion_wgs84.geojson",
    quiet = TRUE
  )

# Lectura de una capa vectorial (GeoJSON) de daños en la red vial nacional
danos <-
  st_read(
    "https://raw.githubusercontent.com/ggaltar/danos_red_vial/main/capas/danos_wgs84.geojson",
    quiet = TRUE
  )

# Lectura de una capa raster de altitud
altitud <-
  rast(
    "/vsicurl/https://raw.githubusercontent.com/tpb728O-programaciongeoespacialr/2021ii/master/datos/worldclim/altitud.tif"
  )
```

Column {data-width=600}
-----------------------------------------------------------------------

### Tabla de daños

```{r tabla}
danos %>%
  st_drop_geometry() %>%
  select(id, estructura, elemento, tipo, severidad) %>%
  datatable(rownames = FALSE,
            colnames = c('ID', 'Estructura','Elemento', 'Tipo', 'Severidad'),
            filter = 'top',
            options = list(
              language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
            )
  )
```

### Mapa ubicación de daños
```{r mapa, warning=FALSE}
altitud_rl <- raster::raster(altitud)

# Registro de daños, zonas de conservación y ráster de altitud
leaflet() %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap , group = "Nat Geo") %>%
  addTiles(group = "OSM") %>%
  addProviderTiles(providers$CartoDB.Positron, group = "CartoDB") %>%
  setView(-84.10, 9.5, 7) %>%
  addRasterImage(
    altitud_rl, 
    opacity = 0.5,
    group = "Altitud"
  ) %>%    
  addPolygons(
    data = zonas,
    color = "black",
    fillColor = "transparent",
    stroke = TRUE,
    weight = 1.0,
    group = "Zonas de conservación"
  ) %>%
  addCircleMarkers(
    data = danos,
    stroke = F,
    radius = 3,
    fillColor = '#3c6e71',
    fillOpacity = 1,
    group = "Daños"
  )  %>%
  addLayersControl(
    baseGroups = c("Nat Geo", "OSM", "CartoDB"),
    overlayGroups = c("Daños", "Zonas de conservación","Altitud"),
    options = layersControlOptions(collapsed = FALSE)
  ) %>%
  hideGroup("Altitud")
```


Column {.tabset data-width=400}
-----------------------------------------------------------------------

### Gráfico de principales elementos dañados

```{r graf1}
# Preparación de los datos
elementos <-
  danos %>%
  st_drop_geometry() %>%
  select(elemento) %>%
  rename(Elemento = elemento) %>%
  group_by(Elemento) %>%
  summarise(suma = n()) %>%
  filter(suma > 10)

# Ordenando la tabla por cantidad en orden descendente (no se usó, se cambió por reorder() )
#elementos$Elemento <- factor(elementos$Elemento,
#                      levels = elementos$Elemento[order(elementos$suma, decreasing = TRUE)])


# Gráfico de principales elementos dañados

ggplot(elementos, aes(x = reorder(Elemento, -suma),y = suma)) +
  geom_col(colour = "#bc4b51", fill = "#bc4b51",width = 0.5) +
  geom_text(aes(label = suma), vjust = 1.2, colour = "White") +
  ggtitle("Principales elementos dañados") +
  theme(plot.title = element_text(hjust = 0.5),
        axis.text.x = element_text(angle = 30,hjust = 1, vjust = 1)
        ) +
  xlab("Elementos") +
  ylab("Cantidad")
```

### Gráfico de registros mensuales
```{r}
registros_mes <-
  danos %>%
  st_drop_geometry() %>%
  mutate(fecha = as.Date(fecha_rep, formtat = "%m/%d/%Y")) %>%
  group_by (mes = format(fecha, "%m")) %>%
  summarise (reportes = n())

# Gráfico de registros mensuales
ggplot(registros_mes, aes(x = mes, y = reportes)) +
  ggtitle("Registros de daños por mes 2020-2021") +
  geom_col(colour = "#6a994e", fill = "#6a994e",width = 0.5) + 
  geom_text(aes(label = reportes), vjust = -0.5, colour = "#3a5a40") +
  theme(plot.title = element_text(hjust = 0.5)) +
  xlab("Mes") +
  ylab("Reportes") +
  scale_x_discrete(labels = c("01" = "Ene", "02" = "Feb", "03" = "Mar", "04" = "Abr", "05" = "May", "06" = "Jun", "07" = "Jul", "08" = "Ago", "09" = "Set", "10" = "Oct", "11" = "Nov", "12" = "Dic"))
```